Backup optimization in hybrid storage environment

ABSTRACT

A means for assigning database objects to a backup storage group proceeds by collecting information related to a plurality of backup devices. The information collected includes speed of recovery, time to backup, and a recovery rank for each device. A backup pool is defined, using a database configuration parameter, to contain one or more of the plurality of backup devices. A determination is made to store a backup of a data object in a first device of the plurality of backup devices based on the collected information and a priority rank associated with the data object.

BACKGROUND

The present disclosure relates to optimizing a backup of a database, andmore specifically, to optimizing backups in a hybrid storageenvironment.

In executing a backup, commonly a backup administrator is needed toensure the infrastructure of a backup device or backup location ishealthy and has adequate space. Existing backup strategies often requirethat the strategy and/or the media to take the backup is pre-defined.

SUMMARY

According to embodiments of the present disclosure, a method isdescribed for assigning database objects to a backup storage group.

The method proceeds by collecting information related to a plurality ofbackup devices. The information collected may include each device'sspeed of recovery, time to backup, and an associated recovery rank. Abackup pool is defined using a database configuration parameter. Thebackup pool contains one or more of the plurality of backup devices.

The method further proceeds by determining to store a backup of a dataobject in a first device of the plurality of backup devices based on thecollected information and a priority rank associated with the dataobject.

A computing system and computer program product can embody the methodand structures of the disclosure. The computing system can comprise anetwork, a memory configured to store backup device and data objectmetadata, and a backup module in communication with the memory. Thecomputing system can be configured to perform the method.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 depicts an example method for optimizing database backups in ahybrid storage environment, according to embodiments of the presentdisclosure.

FIG. 2A depicts an example system for optimizing database backups in ahybrid storage environment, according to embodiments of the presentdisclosure.

FIG. 2B depicts an example system for optimizing database backups in ahybrid storage environment handling a failure, according to embodimentsof the present disclosure.

FIG. 3A depicts a cloud computing node according to an embodiment of thepresent invention.

FIG. 3B depicts a cloud computing environment according to an embodimentof the present invention.

FIG. 3C depicts abstraction model layers according to an embodiment ofthe present invention.

FIG. 4 depicts a high-level block diagram of an example computer systemfor implementing the methods and modules described herein.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to optimizing a backup of adatabase, and more particular aspects relate to optimizing backups in ahybrid storage environment. While the present disclosure is notnecessarily limited to such applications, various aspects of thedisclosure may be appreciated through a discussion of various examplesusing this context.

Existing database backup management systems have only a limited abilityto handle and utilize storage environments with heterogeneous backupdevices. In order to utilize such a hybrid storage environment, thebackup administrator must pre-configure the database with the media ofeach of the heterogeneous devices used to take the backup. Further, ifan issue with a particular media assigned to take a backup arises duringthe backup window the backup administrator must reconfigure the backupand reassign it to another media to permit a successful backup. In thecase of a device failure, the entire backup may fail and cannot bereinitiated until the device is fixed and made available again to thedatabase.

A method and system is described herein for taking a backup of adatabase using a hybrid storage environment. By configuring a backupdevice pool and using a separate parameter to define the pool at thedatabase level, the details of the specific devices are hidden from thedatabase and failure of a particular device in the pool will not affectthe success of the backup. From the perspective of the database, anyadjustments made to which device receives the backup is concealed andthe database only sees that the backup is taken by the pool. Further,the method or system can maintain metadata such as: the time to take abackup, the media upon which a backup is taken, system utilization ofeach backup device, the space available in the pool and on individualdevices, the health state of the pool and individual backup devices,etc. This metadata can be used to maximize effective usage of thedisparate devices in the pool.

An access system catalog may be provided to rank and/or identify therank of database objects and to place the data objects on a particularbackup device in the pool according to their rank, e.g. high rankingobjects essential for recovery may be backed up on a solid state drive(SSD) device and lower ranking objects stored on a serial AT attachment(SATA) or on a tape.

Described herein is a method for assigning database objects to a hybridbackup storage group. In embodiments, the method may proceed as theexample method 100 depicted in FIG. 1.

The example method 100 may begin by configuring a backup device pool, asin operation 105. The backup device pool may generally contain aplurality of heterogeneous backup devices. Backup devices in the poolmay include a Tivoli Storage Manager (TSM) device, drives (raw, flash,SATA, etc.), a disk pool, a virtual tape library (VTL), SSD, etc. Thepool may be assembled, in embodiments, using a configuration file whichcomprises a list of the plurality of heterogeneous backup devices. Theconfiguration file may be populated by running commands at the databaselevel to add or remove devices. In embodiments, the commands to add orremove devices from the pool may execute before, after, or any pointduring the backup window.

Information related to the plurality of backup devices may be collected,as in operation 110. In embodiments, the information collected mayinclude speed of recovery, time to backup, a recovery rank for eachdevice, a media identifier (indicating a type of media associated with agiven backup device), a resource indicator, etc. The informationcollected may be used to rank the plurality of heterogeneous backupdevices in the pool. Devices may be ranked according to security,reliability, or some other criteria prioritized by a user. For example,the recovery rank for a particular device may be calculated based on thedevice's speed of recovery, media identifier, and resource indicator.

The backup device pool may be defined, at the database level, using adatabase configuration parameter, as in operation 115. By defining thebackup device pool at the database level with the configurationparameter, the particular details regarding the plurality of devices inthe pool may be hidden from the database. In this way, from theperspective of the database, the backup is simply taken by the pool andany changes to the backup configuration necessitated by, for example, afailure of a particular device in the pool, may be handled without theinvolvement of the database. In embodiments, the configuration parameterdefining the pool may be modified to redefine the backup pool to add anadditional backup device to the plurality of backup devices or to removea backup device from the plurality of backup devices.

A data object in the database may be identified to be backed up usingthe backup device pool, as in operation 120. Once a data object to bebacked up is identified, a particular device among the plurality ofheterogeneous backup devices may be determined to be the best device tostore a backup of the data object, as in operation 125. In embodiments,the particular backup device among the plurality of heterogeneous backupdevices which is determined to be the best device to store the backup ofthe data object is selected according to the rank of the backup device,the device's rank determined according the information collectedregarding the plurality of backup devices, and a priority rankassociated with the data object. The priority rank associated with thedata object may generally be determined according the data object'srole, or lack of a role, in database recovery. In embodiments, thecriteria for ranking the data objects may vary.

The method may at any point receive or seek indication of a failure of adevice among the plurality of backup devices, as in decision block 130.The indication of failure may be transmitted by the device itself as theresult of self-diagnostics, detected by an external monitoring system,or any other means of assessing a device's health state.

If a failure is detected in the first device selected to store thebackup of the data object, the failure may be analyzed to identify acause for the failure. In embodiments, the analysis may be receivedalong with the indication of the device failure, or the analysis may beexecuted by the backup system. The analysis may involve an initialassessment determining whether or not the cause of the failure is due tothe device hardware, as in decision block 135. If it is determined thatthe cause of the failure was due to the device hardware, then the nextbest device in the backup pool for storing a given data object may bedetermined, as in operation 140. Generally, the next best device in thepool for storing a given data object may be determined using the samecriteria used when selecting the first choice device. Once the newdevice is selected, it may be reassessed for failure, as in decisionblock 130.

If instead the analysis at decision block 135 determines that the causeof the failure was not due to the device hardware of the selecteddevice, then further analysis may be performed. Based on the causeidentified, the backup command may be reinitiated, as in operation 145.Following re-initiation of the backup command, an assessment may be madeof whether the backup is complete, as in decision block 150. If it isdetermined that it is complete, to method may end, as in operation 155.If the backup is not complete, e.g. the database indicates there aremore data objects to be backed up, a new data object to backup may beidentified as in operation 120.

If at decision block 130 no failure is detected, the method may proceedto determine if the backup is complete, as at decision block 150. If itis determined that it is complete, the method may end, as in operation155. If the backup is not complete, e.g. the database indicates one ormore data objects remain to be backed up, a new data object to backupmay be identified as in operation 120.

Referring now to FIG. 2A, an example computer system 200 for assigningdatabase objects to a backup storage group is depicted. In embodiments,the example system 200 may be a cloud system or configured on a network.

In embodiments, the system may include a memory 205. In embodiments, thememory may contain program instructions for performing a method similarto the example method 100 described above in relation to FIG. 1. Thememory 205 may contain metadata useful for carrying out the method.Metadata stored in the memory 205 may include backup device metadata210A for the backup devices in the pool and/or data object metadata 210Bfor data objects in the database to be backed up.

The program instructions in the memory 205 may generally be executableby a processor, such as the backup module 215 in the example systemdepicted in FIG. 2A. In embodiments, the backup module 215 may be incommunication with the memory 205. The backup module 215 may beconfigured to enable the system 200 to perform the method as stored inthe memory 205. The backup module 215 may itself be a processor, or itmay contain multiple components which may include a processor.

The system 200 may further contain a pool 220 of heterogeneous backupdevices 220A-D. Collected information related to the backup device220A-D may be stored in the memory 205 as backup device metadata 210A.Backup device metadata 210A may include, for example, speed of recovery,time to backup, a recovery rank for each device, a media identifier, aresource indicator, etc. A recovery rank for each device 220A-D may becalculated based on components of the particular device's metadata. Forexample, in embodiments, a device's recovery rank may be calculatedusing the device's speed of recovery, media identifier, and resourceindicator. The recovery rank may serve to order the backup devices220A-D according to reliability, security, or some other user-selectedcriteria. The recovery rank may place backup devices determined to bebest suited for more critical data objects at higher ranks than otherbackup devices determined to be less suited for critical data objects.

The backup device pool 220 may be defined by a database configurationparameter 225. In embodiments, the configuration parameter 225 may becommunicated to the backup module 215, as in this example, or may becommunicated directly to the database 235. In embodiments, theconfiguration parameter 225 may define the pool 220 at the databaselevel, and be stored in the database 235. The backup module 215 maymodify the configuration parameter 225 to add or subtract backup devicesto/from the pool 220. In embodiments, the configuration parameter 225may be defined and modified by the database 235 itself.

The system 200 may include or be in communication with a database 235,such as cloud database. In embodiments, the database may be a clouddatabase, as in example system 200, a remote or integral disk database,a distributed database, etc. The database 235 may store any number ofdata objects 230A-D. Each data object 230A-D may have associated dataobject metadata 210B. The data object metadata 210B may be stored in thememory 205, as in example system 200, or may be stored along with dataobject 230A-D in the database 235. The data object metadata 210B mayinclude a priority rank for the particular data object 230, indicating,for example, the importance of the particular data object in therecovery process for the database.

The backup module 215 may receive or retrieve a data object 230A to bebacked up. The backup module 215 may determine to store a backup of thedata object 230A in a first backup device 220A based on the backupdevice metadata 210A and any relevant data object metadata 210B.

Referring now to FIG. 2B, example system 200 is depicted handling ahardware failure in one of the backup devices comprising the backuppool. In embodiments, the backup module 215 may detect a failure in thefirst backup device 220A and perform an analysis of the failure. Inembodiments, the backup module 215 may receive indication and analysisof the failure from the first backup device 220A itself or an externalmonitoring system. The backup module may identify a hardware failure asthe cause for the failure in the first device and in response identify asecond backup device (e.g. backup device 220B) as the most suitablesecond choice to store the backup of the data object 230A based on thecollected information and the priority rank associated with each of thebackup device 220B and the data object 230A. The process for determiningwhich device among the pool 220 would best serve as the second choicebackup device may generally similar to the process for selecting thefirst choice backup device.

It is understood in advance that although this disclosure includes adetailed description on cloud computing, implementation of the teachingsrecited herein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g. networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forload-balancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure comprising anetwork of interconnected nodes.

Referring now to FIG. 3A, a schematic of an example of a cloud computingnode is shown. Cloud computing node 300 is only one example of asuitable cloud computing node and is not intended to suggest anylimitation as to the scope of use or functionality of embodiments of theinvention described herein. Regardless, cloud computing node 300 iscapable of being implemented and/or performing any of the functionalityset forth hereinabove.

In cloud computing node 300 there is a computer system/server 302, whichis operational with numerous other general purpose or special purposecomputing system environments or configurations. Examples of well-knowncomputing systems, environments, and/or configurations that may besuitable for use with computer system/server 302 include, but are notlimited to, personal computer systems, server computer systems, thinclients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, and the like.

Computer system/server 302 may be described in the general context ofcomputer system-executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes. Computer system/server 302 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 3A, computer system/server 302 in cloud computing node300 is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 302 may include, but are notlimited to, one or more processors or processing units 306, a systemmemory 316, and a bus 308 that couples various system componentsincluding system memory 316 to processor 306.

Bus 308 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnects (PCI) bus.

Computer system/server 302 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 302, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 316 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 318 and/or cachememory 320. Computer system/server 302 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 322 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 308 by one or more datamedia interfaces. As will be further depicted and described below,system memory 316 may include at least one program product having a set(e.g., at least one) of program modules that are configured to carry outthe functions of embodiments of the invention.

Program/utility 324, having a set (at least one) of program modules 326,may be stored in system memory 316 by way of example, and notlimitation, as well as an operating system, one or more applicationprograms, other program modules, and program data. Each of the operatingsystem, one or more application programs, other program modules, andprogram data or some combination thereof, may include an implementationof a networking environment. Program modules 326 generally carry out thefunctions and/or methodologies of embodiments of the invention asdescribed herein.

Computer system/server 302 may also communicate with one or moreexternal devices 304 such as a keyboard, a pointing device, a display314, etc.; one or more devices that enable a user to interact withcomputer system/server 302; and/or any devices (e.g., network card,modem, etc.) that enable computer system/server 302 to communicate withone or more other computing devices. Such communication can occur viainput/output (I/O) interfaces 312. Still yet, computer system/server 302can communicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 20. As depicted, network adapter 310communicates with the other components of computer system/server 302 viabus 308. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 302. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

Referring now to FIG. 3B, illustrative cloud computing environment 328is depicted. As shown, cloud computing environment 328 comprises one ormore cloud computing nodes 300 with which local computing devices usedby cloud consumers, such as, for example, personal digital assistant(PDA) or cellular telephone 330A, desktop computer 330B, laptop computer330C, and/or automobile computer system 330N may communicate. Cloudcomputing nodes 300 may communicate with one another. They may begrouped (not shown) physically or virtually, in one or more networks,such as Private, Community, Public, or Hybrid clouds as describedhereinabove, or a combination thereof. This allows cloud computingenvironment 328 to offer infrastructure, platforms and/or software asservices for which a cloud consumer does not need to maintain resourceson a local computing device. It is understood that the types ofcomputing devices 330A-N shown in FIG. 3B are intended to beillustrative only and that cloud computing nodes 300 and cloud computingenvironment 328 can communicate with any type of computerized deviceover any type of network and/or network addressable connection (e.g.,using a web browser).

Referring now to FIG. 3C, a set of functional abstraction layersprovided by cloud computing environment 328 (FIG. 3B) is shown. Itshould be understood in advance that the components, layers, andfunctions shown in FIG. 3C are intended to be illustrative only andembodiments of the invention are not limited thereto. As depicted, thefollowing layers and corresponding functions are provided:

Hardware and software layer 60 includes hardware and softwarecomponents. Examples of hardware components include: mainframes 61; RISC(Reduced Instruction Set Computer) architecture based servers 62;servers 63; blade servers 64; storage devices 65; and networks andnetworking components 66. In some embodiments, software componentsinclude network application server software 67 and database software 68.

Virtualization layer 70 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers71; virtual storage 72; virtual networks 73, including virtual privatenetworks; virtual applications and operating systems 74; and virtualclients 75.

In one example, management layer 80 may provide the functions describedbelow. Resource provisioning 81 provides dynamic procurement ofcomputing resources and other resources that are utilized to performtasks within the cloud computing environment. Metering and Pricing 82provide cost tracking as resources are utilized within the cloudcomputing environment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal 83 provides access to the cloud computing environment forconsumers and system administrators. Service level management 84provides cloud computing resource allocation and management such thatrequired service levels are met. Service Level Agreement (SLA) planningand fulfillment 85 provide pre-arrangement for, and procurement of,cloud computing resources for which a future requirement is anticipatedin accordance with an SLA.

Workloads layer 90 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation 91; software development and lifecycle management 92; virtualclassroom education delivery 93; data analytics processing 94;transaction processing 95; and mobile desktops 96.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention. The computer readable storage medium can be atangible device that can retain and store instructions for use by aninstruction execution device.

The computer readable storage medium may be, for example, but is notlimited to, an electronic storage device, a magnetic storage device, anoptical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions. These computer readable programinstructions may be provided to a processor of a general purposecomputer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, such that the instructions,which execute via the processor of the computer or other programmabledata processing apparatus, create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks. These computer readable program instructions may also be storedin a computer readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

Referring now to FIG. 4, shown is a high-level block diagram of anexample computer system (i.e., computer) 400 that may be used inimplementing one or more of the methods or modules, and any relatedfunctions or operations, described herein (e.g., using one or moreprocessor circuits or computer processors of the computer), inaccordance with embodiments of the present disclosure. In someembodiments, the major components of the computer system 400 maycomprise one or more CPUs 402, a memory subsystem 404, a terminalinterface 412, an I/O (Input/Output) device interface 414, a storageinterface 416, and a network interface 418, all of which may becommunicatively coupled, directly or indirectly, for inter-componentcommunication via a memory bus 403, an I/O bus 408, and an I/O businterface unit 410.

The computer system 400 may contain one or more general-purposeprogrammable central processing units (CPUs) 402A, 402B, 402C, and 402D,herein generically referred to as the CPU 402. In some embodiments, thecomputer system 400 may contain multiple processors typical of arelatively large system; however, in other embodiments the computersystem 400 may alternatively be a single CPU system. Each CPU 402 mayexecute instructions stored in the memory subsystem 404 and may compriseone or more levels of on-board cache.

In some embodiments, the memory subsystem 404 may comprise arandom-access semiconductor memory, storage device, or storage medium(either volatile or non-volatile) for storing data and programs. In someembodiments, the memory subsystem 404 may represent the entire virtualmemory of the computer system 400, and may also include the virtualmemory of other computer systems coupled to the computer system 400 orconnected via a network. The memory subsystem 404 may be conceptually asingle monolithic entity, but, in some embodiments, the memory subsystem404 may be a more complex arrangement, such as a hierarchy of caches andother memory devices. For example, memory may exist in multiple levelsof caches, and these caches may be further divided by function, so thatone cache holds instructions while another holds non-instruction data,which is used by the processor or processors. Memory may be furtherdistributed and associated with different CPUs or sets of CPUs, as isknown in any of various so-called non-uniform memory access (NUMA)computer architectures. In some embodiments, the main memory or memorysubsystem 404 may contain elements for control and flow of memory usedby the CPU 402. This may include a memory controller 405.

Although the memory bus 403 is shown in FIG. 4 as a single bus structureproviding a direct communication path among the CPUs 402, the memorysubsystem 404, and the I/O bus interface 410, the memory bus 403 may, insome embodiments, comprise multiple different buses or communicationpaths, which may be arranged in any of various forms, such aspoint-to-point links in hierarchical, star or web configurations,multiple hierarchical buses, parallel and redundant paths, or any otherappropriate type of configuration. Furthermore, while the I/O businterface 410 and the I/O bus 408 are shown as single respective units,the computer system 400 may, in some embodiments, contain multiple I/Obus interface units 410, multiple I/O buses 408, or both. Further, whilemultiple I/O interface units are shown, which separate the I/O bus 408from various communications paths running to the various I/O devices, inother embodiments some or all of the I/O devices may be connecteddirectly to one or more system I/O buses.

In some embodiments, the computer system 400 may be a multi-usermainframe computer system, a single-user system, or a server computer orsimilar device that has little or no direct user interface, but receivesrequests from other computer systems (clients). Further, in someembodiments, the computer system 400 may be implemented as a desktopcomputer, portable computer, laptop or notebook computer, tabletcomputer, pocket computer, telephone, smart phone, mobile device, or anyother appropriate type of electronic device.

It is noted that FIG. 4 is intended to depict the representative majorcomponents of an exemplary computer system 400. In some embodiments,however, individual components may have greater or lesser complexitythan as represented in FIG. 4, components other than or in addition tothose shown in FIG. 4 may be present, and the number, type, andconfiguration of such components may vary.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present disclosurehave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer program product comprising anon-transitory computer readable storage medium having program codeembodied therewith, the program code executable by a computing device toperform a method, the method comprising: collecting information relatedto a plurality of backup devices, wherein the plurality of backupdevices includes backup devices representing a plurality of media typesand the information includes speed of recovery, time to backup, a mediaidentifier, and a resource indicator, calculating a recovery rank foreach device based on the device's speed of recovery, media identifier,and resource indicator; defining a backup pool of the plurality ofbackup devices using a database configuration parameter, wherein adatabase is to access the backup pool via the database configurationparameter and wherein the database cannot individually access a backupdevice of the plurality of backup devices; modifying the databaseconfiguration parameter to redefine the backup pool to add a backupdevice to the plurality of backup devices; modifying the databaseconfiguration parameter to redefine the backup pool to remove a backupdevice from the plurality of backup devices; determining to store abackup of a data object in a first device of the plurality of backupdevices based on the collected information and a priority rankassociated with the data object, the priority rank determined accordingto the data object's role in database recovery; detecting a firstfailure in the first device; analyzing the first failure in the firstdevice; identifying a first hardware failure as causing the firstfailure in the first device; determining, in response to identifying thehardware failure, to store the backup of the data object in a seconddevice of the plurality of backup devices based on the collectedinformation and the priority rank associated with the data object;detecting a second failure in the second device; analyzing the secondfailure in the second device; determining the second failure was notcaused by a second hardware failure; reinitiating storing the backup ofthe data object in the second device; and determining that the backup iscomplete.